package coop.tecso.modelo1.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class UtilDB {

	    private static UtilDB instance;

	    private Connection conexion;

	    private String driver;

	    private String tipoJDBC;

	    private String fuenteODBC;

	    private String stringConexion;

	    private String usuario;

	    private String pass;



	    private UtilDB()

	    {

	    }



	    /**

	     *

	     * @return UtilDB

	     */

	    public static UtilDB getUtilDB()

	    {

	        if (instance == null)

	        {

	            instance = new UtilDB();

	        }

	        return instance;

	    }



	    /**

	     * Este metodo recibe los valores para setear la conexoin

	     * @param driver String

	     * @param stringConexion String

	     * @param usuario String

	     * @param pass String

	     */

	    public void setConexion(String driver, String stringConexion,

	                            String usuario, String pass)

	    {

	        try

	        {

	            this.driver = driver;

	            this.stringConexion = stringConexion;

	            this.usuario = usuario;

	            this.pass = pass;

	        } catch (Exception e)

	        {

	            System.out.println(

	                "Datos incorrectos de conexion a la base de datos" +

	                e.getMessage());

	            e.printStackTrace();

	        }

	    }



	    /**

	     * Metodo Provisorio para configurar la conexion.

	     */

	    public void setConexion()

	    {

	        // VERSION ACTUAL HARDCODEADA PARA EL TOMCAT
	        // DESCOMENTAR ESTA ANTES DE ENTREGAR EL .WAR y cambiar el stringConexion
	    	this.driver = "org.apache.derby.jdbc.ClientDriver";
	        this.stringConexion = "jdbc:derby://localhost:1527/dominio;create=false;user=vm;password=vm";

	    }



	    public void abrirConexion()

	        throws Exception

	    {
	        try

	        {
	            Class.forName(this.driver);
	            conexion = DriverManager.getConnection(this.stringConexion);

	        } catch (ClassNotFoundException cnfe)

	        {
	            System.out.println("No se encontro el driver" + cnfe.getMessage());
	            cnfe.printStackTrace();
	            throw new SQLException(
	                "No se puede establecer conexion con la base de datos, error de driver.");
	        } catch (SQLException se)

	        {
	            System.out.println("No se pudo establecer la conexion" +

	                               se.getMessage());
	            se.printStackTrace();
	            throw new SQLException(

	                "No se puede establecer conexion con la base de datos, error de conexion.");
	        }

	    }


	    public Connection getConnection()

	        throws Exception

	    {

	        // ATENCION !!! luego cuando se ande lo del xml cambiar metodo de seteo.

	        setConexion();

	        abrirConexion();

	        return this.conexion;

	    }
	    
	    
	    /**

	     * Este metodo cierra la conexion.

	     */

	    public void cerrarConexion()

	    {

	        try

	        {

	            conexion.close();



	        } catch (SQLException se)

	        {

	            System.out.println("No se pudo cerrar la conexion" + se.getMessage());

	            se.printStackTrace();

	        }

	    }





}
